Computer-aided design (CAD) software allows a user to construct and manipulate complex three-dimensional (3D) models of assembly designs. A number of different modeling techniques can be used to create a model of an assembly. These techniques include solid modeling, wire-frame modeling, and surface modeling. Solid modeling techniques provide for topological 3D models, where the 3D model is a collection of interconnected edges and faces, for example. Geometrically, a 3D solid model is a collection of trimmed surfaces. The trimmed surfaces correspond to the topological faces bounded by the edges. Wire-frame modeling techniques, on the other hand, can be used to represent a model as a collection of simple 3D lines, whereas surface modeling can be used to represent a model as a collection of exterior surfaces. CAD systems may combine these, and other, modeling techniques, such as parametric modeling techniques.
Parametric modeling techniques can be used to define various parameters for different features and components of a model, and to define relationships between those features and components based on relationships between the various parameters. Solid modeling and parametric modeling can be combined in CAD systems supporting parametric solid modeling.
A design engineer is a typical user of a 3D CAD system. The design engineer designs physical and aesthetic aspects of 3D models, and is skilled in 3D modeling techniques. The design engineer creates parts and may assemble the parts into one or more subassemblies. In addition to parts, a subassembly may also consist of other subassemblies. Using parts and subassemblies, the design engineer designs an assembly. Hereinafter, parts and subassemblies are collectively referred to as components.
A part is constructed using various geometric building blocks. Geometric building blocks, hereinafter referred to as features, may be constructed by first creating a two-dimensional profile and extruding that profile into a three-dimensional object. Features may be divided into two primary categories. The two primary categories are features used to add material to a part, such as a boss, and features used to subtract material from a part, such as a cut.
The order in which a design engineer creates features while constructing a part affects the physical structure of that part in a feature-based CAD system. For example, a part constructed first by cutting a block with a cylinder and then adding a boss that extends inside the void left by the cut cylinder will result in a hole with material from the boss inside the hole. If the order of the operations were reversed such that the boss was added before the cylindrical cut, then the cut would not only cut the material of the original block, but also that of the subsequent boss, resulting in a hole with no material inside of it.
Generally, in a feature-based CAD system, a feature acts on all features that have been previously included in the model and has no effect on features subsequently introduced to the model. Thus, feature-based modeling systems are also history-based modeling system. The design engineer is required to control the scope of a feature by manipulating the feature's location in the overall historical order of features. Commercially available feature-based modeling systems include the SolidWorks® 2001Plus software system available from SolidWorks Corporation of Concord, Mass.
History-based CAD systems that define components as a sequence of simple feature operations work on the same principal. The data (e.g., points, lines, and dimensions) necessary to regenerate a component is stored as one or more features and the component keeps an ordered list of these features. Each feature has a corresponding regeneration algorithm that takes the feature data and the geometry resulting from the previous features in the ordered list and modifies the geometry according to the feature's definition (e.g., make a cut of a certain shape at a certain location). To create a new component, the user typically will add features one by one to the component's feature list. To modify a feature, the user simply changes the feature's data and then the system recreates the component by deleting the old resulting geometry and regenerating each feature one by one in the order in which the user originally specified the features. Thus, in the current state of the art, the user's feature creation order is identical to the internal feature regeneration order.
While building a part, the order in which a design engineer should introduce features and direct the system to perform operations is not always intuitive. Many times the design engineer has invested a great deal of time designing a part before discovering that the features should be introduced in a different order. When the design engineer realizes that the feature ordering did not achieve the desired result (e.g., the desired geometric result), he or she must modify the definition of the part, for example, by rearranging the hierarchical structure of the part.
One way in which the definition of a part may be modified is to redesign the features that define the part. Those features that were introduced in an order that caused the geometry to be generated incorrectly may need to be deleted and re-created in an order that causes the geometry to be generated correctly. Thus, the design engineer must spend additional time defining the same feature again.
Another way in which the definition of a part may be modified is to change the feature history. A CAD system may keep track of the feature history and present the history to the design engineer as a hierarchical collection of features. The feature history may be presented in a window (or a section of the window) generated by the CAD system. The design engineer may be able to rearrange the collection of features by dragging a depiction of a feature to a different position in the hierarchical collection, and thereby modify the feature history for a part. U.S. Pat. No. 5,815,154 to Hirschtick et al discloses a system for modifying a model by allowing a user to graphically manipulate a hierarchical collection of features.
Some design engineers may decide that re-designing the part is too time-consuming. A design engineer may find that the incorrect geometry can be easily corrected by adding a cut that is identical to another cut. Although the identical cut is redundant, the geometry is corrected quickly without re-ordering the features in a part.
Due to the problem of introducing features in a particular order, modeling a part may require a great deal of planning and expertise. The design engineer must determine the correct ordering of features before creating the features to obtain the desired geometric result. The ordering problem is present throughout the modeling process. The difficulty of the ordering problem may increase as the modeling process progresses because as a part becomes more complex, the design engineer has more difficulty determining the correct feature order. Although, a CAD system may provide a feature management tool to help a design engineer rearrange the history of features included in a part, the design engineer is encumbered with analyzing the feature history and reordering the features in the part hierarchy as necessary to ensure that the part is geometrically correct.
A design engineer who intends to become skilled in 3D feature-based modeling needs to become proficient in ordering features. Learning how best to introduce features is part of the experience necessary for becoming skilled in the art of 3D feature-based modeling.
Additionally, features may be dependent on other features. For example, the position of one hole may depend on the position of a second hole. This type of geometric dependency may be defined by establishing a parametric relationship between the two holes. When the value of an attribute of one feature in the parametric relationship is modified, the value of an attribute of another feature in the parametric relationship may be automatically modified in response. Generally, a design engineer intends that a parametric relationship be preserved when re-ordering the hierarchical structure of a part. The burden is placed on the design engineer first to be aware of the dependencies and second to ensure that they are preserved (perhaps by re-establishing the dependencies if the dependencies are severed during a re-ordering process).
Often the design engineer discovers that the feature order results in the creation of a physically incorrect part. Therefore, a burden is placed on the design engineer to recreate portions of the part or the entire part, re-order the features that constitute the part, or in some other tedious manner, correct the inaccurate geometry. The design engineer spends an enormous amount of time and effort during the 3D modeling process controlling the feature order and the feature order's effect on the final geometric representation of a part.